home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_c / cuj0696.zip / DWYER.ZIP / SPECTRAL.TST / XTENDEFS.H < prev   
C/C++ Source or Header  |  1996-03-23  |  5KB  |  167 lines

  1. /* ============ */
  2. /* xtendefs.h    */
  3. /* ============ */
  4. /* ==================================================================== */
  5. /*           DEFINITIONS FOR EXTENDED PRECISION FUNCTIONS        */
  6. /* ==================================================================== */
  7.  
  8. # if defined(__XTENDEFS_H__)
  9. #    /* Do Nothing */
  10. # else
  11. #    define    __XTENDEFS_H__
  12.  
  13. #if !defined(__XQHEAD_H__)
  14. #    include "xqhead.h"
  15. # endif
  16.  
  17. typedef    unsigned short    USHORT;
  18. typedef    long double    LDBL;
  19. typedef    USHORT         QELEM[NE];
  20. typedef    USHORT           *QPTR;
  21.  
  22. #define    FALSE    0
  23. #define    TRUE    1
  24.  
  25. #define    ASCTOX(S, X)            asctoq(S, X)
  26. #define    DBLTOX(D, X)            etoq(&D, X)
  27. #define    LDBLTOX(L, X)            e64toq(&L, X)
  28. #define    LONGTOX(n, X)            ltoq(&n, X)
  29. #define    XABS(X)                qabs(X)
  30. #define    XADD(X, Y, R)            qadd(X, Y, R)
  31. #define    XCLEAR(X)            qclear(X)
  32. #define    XCMP(X, Y)            qcmp(X, Y)
  33. #define    XCOPY(X, R)            qmov(X, R)
  34. #define    XDIV(X, Y, R)            qdiv(Y, X, R)
  35. #define    XEQUAL(X, Y)            (XCMP(X, Y) == 0)
  36. #define    XEXP(X, R)            qexp(X, R)
  37. #define    XFLOOR(X, R)            qfloor(X, R)
  38. #define    XFPRINTF(U, S, X, N)        \
  39.     {                    \
  40.     char    Str[128];        \
  41.     XTOASC(X, Str, N);        \
  42.     fprintf(U, "%s%s\n", S, Str);    \
  43.     }
  44. #define    XGT(X, Y)            (XCMP(X, Y) > 0)
  45. #define    XGTE(X, Y)            (XCMP(X, Y) >= 0)
  46. #define    XLOG(X, R)            qlog(X, R)
  47. #define    XLT(X, Y)            (XCMP(X, Y) == -1)
  48. #define    XLTE(X, Y)            (XEQUAL(X, Y) || XCMP(X, Y) == -1)
  49. #define    XMAX(X, Y, R)            \
  50.     {                                   \
  51.     if (XGT(X, Y))                  \
  52.         XCOPY(X, R);                \
  53.     else                            \
  54.         XCOPY(Y, R);                \
  55.     }
  56. #define    XMIN(X, Y, R)            \
  57.     {                                   \
  58.     if (XGT(Y, X))                  \
  59.         XCOPY(X, R);                \
  60.     else                            \
  61.         XCOPY(Y, R);                \
  62.     }
  63. #define    XML(r, c, D)            (((r-1) * D + (c-1)) * NE)
  64.  
  65. #define    XMOD(X, Y, R)            qremain(Y, X, R) /* XMod(X, Y, R) */
  66. #define    XMULT(X, Y, R)            qmul(X, Y, R)
  67. #define    XNEG(X)                qneg(X)
  68. #define    XPOW(X, Y, R)            qpow(X, Y, R)
  69. #define    XPRINTF(S, X, N)        XFPRINTF(stdout, S, X, N)
  70. #define    XRADD(X, Y)            XADD(X, Y, X)
  71. #define    XRDIV(X,Y)            XDIV(X, Y, X)
  72. #define    XRMULT(X, Y)            XMULT(X, Y, X)
  73. #define    XROUND(X, R)            qround(X, R)
  74. #define    XRSUB(X, Y)            XSUB(X, Y, X)
  75. #define    XSQR(X, R)            XMULT(X, X, R)
  76. #define    XSQRT(X, R)            qsqrt(X, R)
  77. #define    XSUB(X, Y, R)            qsub(Y, X, R)
  78. #define    XSWAP(X, Y)            \
  79.     {                    \
  80.     USHORT    H;            \
  81.     short    i;            \
  82.     for (i = 0; i < NE; ++i)    \
  83.     {                \
  84.         H = X[i];            \
  85.         X[i] = Y[i];        \
  86.         Y[i] = H;            \
  87.     }                \
  88.     }
  89. #define    XTOASC(X, S, N)            qtoasc(X, S, N)
  90. #define    XTODBL(X, D)            qtoe(X, &D)
  91. #define    XTOLDBL(X, L)            qtoe64(X, &L)
  92. #define    XTST(X)                XCMP(X, EZERO)
  93. #define    XURAND(X)                       qrand(X)
  94. #define    XVL(en)                ((en-1) * NE)
  95.  
  96. /* ------------------- */
  97. /* FUNCTION PROTOTYPES */
  98. /* ------------------- */
  99. # undef F
  100. # if defined(__STDC__) || defined(__PROTO__)
  101. #    define  F( P )  P
  102. # else
  103. #    define  F( P )  ()
  104. # endif
  105.  
  106. /* INDENT OFF */
  107.  
  108. extern    int    addm    F((void *, void *));
  109. extern    int    asctoq    F((char *, void *));
  110. extern    int    cmpm    F((void *, void *));
  111. extern    int    divm    F((void *, void *));
  112. extern    int    dtoq    F((void *, void *));
  113. extern    int    e113toq    F((void *, void *));
  114. extern    int    e64toq    F((void *, void *));
  115. extern    int    etoq    F((void *, void *));
  116. extern    int    ltoq    F((long *, void *));
  117. extern    int    mtherr    F((char *, int));
  118. extern    int    mulin    F((void *, void *));
  119. extern    int    mulm    F((void *, void *));
  120. extern    int    normlz    F((void *));
  121. extern    int    qabs    F((void *));
  122. extern    int    qadd    F((void *, void *, void *));
  123. extern    int    qadd1    F((void *, void *, void *));
  124. extern    int    qclear    F((void *));
  125. extern    int    qcmp    F((void *, void *));
  126. extern    int    qdiv    F((void *, void *, void *));
  127. extern    int    qexp    F((void *, void *));
  128. extern    int    qfloor    F((void *, void *));
  129. extern    int    qifrac    F((void *, long *, void *));
  130. extern    int    qinfin    F((void *));
  131. extern    int    qisneg    F((void *));
  132. extern    int    qldexp    F((void *, int));
  133. extern    int    qlog    F((void *, void *));
  134. extern    int    qmov    F((void *, void *));
  135. extern    int    qmovz    F((void *, void *));
  136. extern    int    qmul    F((void *, void *, void *));
  137. extern    int    qmuli    F((void *, void *, void *));
  138. extern    int    qneg    F((void *));
  139. extern    int    qnrmlz    F((void *));
  140. extern    int    qpow    F((void *, void *, void *));
  141. extern    int    qpowi    F((void *, void *, void *));
  142. extern    int    qrand    F((void *));
  143. extern    int    qremain    F((void *, void *, void *));
  144. extern    int    qround    F((void *, void *));
  145. extern    int    qsqrt    F((void *, void *));
  146. extern    void    qsrand    F((unsigned int));
  147. extern    int    qsub    F((void *, void *, void *));
  148. extern    int    qtanh    F((void *, void *));
  149. extern    int    qtoasc    F((void *, char *, int));
  150. extern    int    qtod    F((void *, void *));
  151. extern    int    qtoe    F((void *, void *));
  152. extern    int    qtoe113    F((void *, void *));
  153. extern    int    qtoe64    F((void *, void *));
  154. extern    int    shdn1    F((void *));
  155. extern    int    shdn16    F((void *));
  156. extern    int    shdn8    F((void *));
  157. extern    int    shift    F((void *));
  158. extern    int    shup1    F((void *));
  159. extern    int    shup16    F((void *));
  160. extern    int    shup8    F((void *));
  161. extern    int    subm    F((void *, void *));
  162.  
  163. # undef    F
  164. /* INDENT ON */
  165.  
  166. # endif
  167.